package im.vinci.server.common.domain.music;

import com.fasterxml.jackson.databind.PropertyNamingStrategy;
import com.fasterxml.jackson.databind.annotation.JsonNaming;
import im.vinci.server.utils.JsonUtils;

import java.io.Serializable;
import java.util.List;

/**
 * Created by tim@vinci on 15/11/26.
 * 返回的歌曲基本信息
 */
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
public class MusicSong implements Serializable{

    private long songId;
    private String songType;
    private String songName;
    private String songSubTitle;
    private String artist;
    private String artistSubTitle;
    private long artistId;
    private String artistLogo;
    private String albumName;
    private String albumSubTitle;
    private long albumId;
    private int playSeconds;
    private String albumLogo;
    private String listenFile;
    private String lyricFile;
    //自动eq调整类型
    private int soundEqualizer;
    private int soundEffect;
    //演唱者
    private String singers;
    /**
     * 是否可以播放
     */
    private boolean playAuthority;

    /**
     * 网络上的播放次数,需要和本地的区分开
     */
    private long playCounts;

    private List<String> tags;

    private List<Long> tagCounts;

    public MusicSong(){}

    public long getSongId() {
        return songId;
    }

    public void setSongId(long songId) {
        this.songId = songId;
    }

    public String getSongType() {
        return songType;
    }

    public void setSongType(String songType) {
        this.songType = songType;
    }

    public String getSongName() {
        return songName;
    }

    public void setSongName(String songName) {
        this.songName = songName;
    }

    public String getSongSubTitle() {
        return songSubTitle;
    }

    public void setSongSubTitle(String songSubTitle) {
        this.songSubTitle = songSubTitle;
    }

    public String getArtist() {
        return artist;
    }

    public void setArtist(String artist) {
        this.artist = artist;
    }

    public String getArtistSubTitle() {
        return artistSubTitle;
    }

    public void setArtistSubTitle(String artistSubTitle) {
        this.artistSubTitle = artistSubTitle;
    }

    public long getArtistId() {
        return artistId;
    }

    public void setArtistId(long artistId) {
        this.artistId = artistId;
    }

    public String getArtistLogo() {
        return artistLogo;
    }

    public void setArtistLogo(String artistLogo) {
        this.artistLogo = artistLogo;
    }

    public String getAlbumName() {
        return albumName;
    }

    public void setAlbumName(String albumName) {
        this.albumName = albumName;
    }

    public String getAlbumSubTitle() {
        return albumSubTitle;
    }

    public void setAlbumSubTitle(String albumSubTitle) {
        this.albumSubTitle = albumSubTitle;
    }

    public long getAlbumId() {
        return albumId;
    }

    public void setAlbumId(long albumId) {
        this.albumId = albumId;
    }

    public int getPlaySeconds() {
        return playSeconds;
    }

    public void setPlaySeconds(int playSeconds) {
        this.playSeconds = playSeconds;
    }

    public String getAlbumLogo() {
        return albumLogo;
    }

    public void setAlbumLogo(String albumLogo) {
        this.albumLogo = albumLogo;
    }

    public String getListenFile() {
        return listenFile;
    }

    public void setListenFile(String listenFile) {
        this.listenFile = listenFile;
    }

    public String getLyricFile() {
        return lyricFile;
    }

    public void setLyricFile(String lyricFile) {
        this.lyricFile = lyricFile;
    }

    public int getSoundEqualizer() {
        return soundEqualizer;
    }

    public void setSoundEqualizer(int soundEqualizer) {
        this.soundEqualizer = soundEqualizer;
    }

    public int getSoundEffect() {
        return soundEffect;
    }

    public void setSoundEffect(int soundEffect) {
        this.soundEffect = soundEffect;
    }

    public String getSingers() {
        return singers;
    }

    public void setSingers(String singers) {
        this.singers = singers;
    }

    public boolean isPlayAuthority() {
        return playAuthority;
    }

    public void setPlayAuthority(boolean playAuthority) {
        this.playAuthority = playAuthority;
    }

    public long getPlayCounts() {
        return playCounts;
    }

    public void setPlayCounts(long playCounts) {
        this.playCounts = playCounts;
    }

    public List<String> getTags() {
        return tags;
    }

    public void setTags(List<String> tags) {
        this.tags = tags;
    }

    public List<Long> getTagCounts() {
        return tagCounts;
    }

    public void setTagCounts(List<Long> tagCounts) {
        this.tagCounts = tagCounts;
    }

    @Override
    public String toString() {
        return JsonUtils.encode(this);
    }
}
